<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<HTML>
<HEAD>
<LINK HREF="mailto:drh@cs.princeton.edu" REV="made" TITLE="David R. Hanson">
<TITLE>Contents for C Interfaces and Implementations</TITLE></HEAD>
<BODY>
<H1>Contents</H1>
<P>
Click on the parenthesized links to browse the named source files. (These files
have no comments, because the book explains them.)</P>
<OL>
<LI><B>Introduction</B><BR>Literate Programs (<A HREF="pkg/double/double.c">double.c</A>)<BR>Programming
Style<BR>Efficiency</LI>
<LI><B>Interfaces and Implementations</B><BR>Interfaces (<A
HREF="pkg/include/arith.h">arith.h</A>)<BR>Implementations (<A
HREF="pkg/src/arith.c">arith.c</A>)</LI>
<LI><B>Atoms</B> <EM><A HREF="atom.pdf">Download/view this chapter</A> (an
Adobe Acrobat PDF file, 52K)</EM><BR> Interface (<A HREF="pkg/include/atom.h">atom.h</A>)<BR>Implementation
(<A HREF="pkg/src/atom.c">atom.c</A>)</LI>
<LI><B>Exceptions and Assertions</B><BR> Interface (<A
HREF="pkg/include/except.h">except.h</A>)<BR>Implementation (<A
HREF="pkg/src/except.c">except.c</A>)<BR>Assertions (<A
HREF="pkg/include/assert.h">assert.h</A>)</LI>
<LI><B>Memory Management</B><BR> Interface (<A HREF="pkg/include/mem.h">mem.h</A>)<BR>Production
Implementation (<A HREF="pkg/src/mem.c">mem.c</A>)<BR>Checking Implementation
(<A HREF="pkg/src/memchk.c">memchk.c</A>)</LI>
<LI><B>More Memory Management</B><BR> Interface (<A
HREF="pkg/include/arena.h">arena.h</A>)<BR>Implementation (<A
HREF="pkg/src/arena.c">arena.c</A>)</LI>
<LI><B>Lists</B><BR> Interface (<A HREF="pkg/include/list.h">list.h</A>)<BR>Implementation
(<A HREF="pkg/src/list.c">list.c</A>)</LI>
<LI><B>Tables</B><BR> Interface (<A HREF="pkg/include/table.h">table.h</A>)<BR>Example:
Word Frequencies (<A HREF="pkg/wf/wf.c">wf.c</A>,
<A HREF="pkg/wf/getword.h">getword.h</A>,
<A HREF="pkg/wf/getword.c">getword.c</A>)<BR>Implementation (<A
HREF="pkg/src/table.c">table.c</A>)</LI>
<LI><B>Sets</B><BR> Interface (<A HREF="pkg/include/set.h">set.h</A>)<BR>Example:
Cross-Reference Listings (<A HREF="pkg/xref/xref.c">xref.c</A>,
<A HREF="pkg/xref/getword.h">getword.h</A>,
<A HREF="pkg/xref/getword.c">getword.c</A>)<BR>Implementation (<A
HREF="pkg/src/set.c">set.c</A>)<BR>
<SMALL>Member Operations &#183; Set Operations</SMALL></LI>
<LI><B>Dynamic Arrays</B><BR> Interfaces (<A HREF="pkg/include/array.h">array.h</A>,
<A HREF="pkg/include/arrayrep.h">arrayrep.h</A>)<BR>Implementation (<A
HREF="pkg/src/array.c">array.c</A>)</LI>
<LI><B>Sequences</B><BR> Interface (<A HREF="pkg/include/seq.h">seq.h</A>)<BR>Implementation
(<A HREF="pkg/src/seq.c">seq.c</A>)</LI>
<LI><B>Rings</B><BR> Interface (<A HREF="pkg/include/ring.h">ring.h</A>)<BR>Implementation
(<A HREF="pkg/src/ring.c">ring.c</A>)</LI>
<LI><B>Bit Vectors</B><BR> Interface (<A HREF="pkg/include/bit.h">bit.h</A>)<BR>Implementation
(<A HREF="pkg/src/bit.c">bit.c</A>)<BR>
<SMALL>Member Operations &#183; Comparisons &#183; Set Operations</SMALL></LI>
<LI><B>Formatting</B><BR> Interface (<A HREF="pkg/include/fmt.h">fmt.h</A>)<BR>
<SMALL>Formatting Functions &#183; Conversion Functions</SMALL><BR>Implementation
(<A HREF="pkg/src/fmt.c">fmt.c</A>)<BR>
<SMALL>Formatting Functions &#183; Conversion Functions</SMALL></LI>
<LI><B>Low-Level Strings</B><BR> Interface (<A HREF="pkg/include/str.h">str.h</A>)<BR>Example:
Printing Identifiers (<A HREF="pkg/ids/ids.c">ids.c</A>)<BR>Implementation (<A
HREF="pkg/src/str.c">str.c</A>)<BR>
<SMALL>String Operations &#183; Searching Strings &#183; Conversion Functions</SMALL></LI>
<LI><B>High-Level Strings</B><BR> Interface (<A HREF="pkg/include/text.h">text.h</A>)<BR>Implementation
(<A HREF="pkg/src/text.c">text.c</A>)<BR>
<SMALL>String Operations &#183; Memory Management &#183; Searching Strings &#183;
Conversion Functions</SMALL></LI>
<LI><B>Extended-Precision Arithmetic</B><BR> Interface (<A
HREF="pkg/include/xp.h">xp.h</A>)<BR>Implementation (<A HREF="pkg/src/xp.c">xp.c</A>)<BR>
<SMALL>Addition and Subtraction &#183; Multiplication &#183; Division and
Comparison &#183; Shifting &#183; String Conversions</SMALL></LI>
<LI><B>Arbitrary-Precision Arithmetic</B><BR> Interface (<A
HREF="pkg/include/ap.h">ap.h</A>)<BR>Example: A Calculator (<A
HREF="pkg/calc/calc.c">calc.c</A>)<BR>Implementation (<A HREF="pkg/src/ap.c">ap.c</A>)<BR>
<SMALL>Negation and Multiplication &#183; Addition and Subtraction &#183;
Division &#183; Exponentiation &#183; Comparisons &#183; Convenience Functions &#183;
Shifting &#183; String and Integer Conversions</SMALL></LI>
<LI><B>Multiple-Precision Arithmetic</B><BR> Interface (<A
HREF="pkg/include/mp.h">mp.h</A>)<BR>Example: Another Calculator (<A
HREF="pkg/mpcalc/mpcalc.c">mpcalc.c</A>)<BR>Implementation (<A
HREF="pkg/src/mp.c">mp.c</A>)<BR>
<SMALL>Conversions &#183; Unsigned Arithmetic &#183; Signed Arithmetic &#183;
Convenience Functions &#183; Comparisons and Logical Operations &#183; String
Conversions</SMALL></LI>
<LI><B>Threads</B><BR> Interfaces<BR>
<SMALL>Threads (<A HREF="pkg/include/thread.h">thread.h</A>) &#183; General
Semaphores (<A HREF="pkg/include/sem.h">sem.h</A>) &#183; Synchronous
Communication Channels (<A HREF="pkg/include/chan.h">chan.h</A>)</SMALL><BR>Examples<BR>
<SMALL>Sorting Concurrently (<A HREF="pkg/sort/sort.c">sort.c</A>) &#183;
Critical Regions (<A HREF="pkg/spin/spin.c">spin.c</A>) &#183; Generating
Primes (<A HREF="pkg/sieve/sieve.c">sieve.c</A>)</SMALL><BR>Implementations<BR>
<SMALL>Synchronous Communication Channels (<A HREF="pkg/src/chan.c">chan.c</A>)
&#183; Threads (<A HREF="pkg/src/thread.c">thread.c</A>) &#183; Thread Creation
and Context-Switching (<A HREF="pkg/src/thread.c">thread.c</A>,
<A HREF="pkg/src/swtch.s">swtch.s</A>) &#183; Preemption &#183; General
Semaphores (<A HREF="pkg/src/thread.c">thread.c</A>) &#183; Context-Switching
on the MIPS and ALPHA</SMALL></LI>
</OL>
<DL><DD><B>Interface Summary</B><BR><B>Bibliography</B><BR><B>Index</B></DD></DL>
<P><A HREF="./">Back to the CII home page</A>.</P>
<HR> 
<ADDRESS><A HREF="http://www.cs.princeton.edu/~drh/">David Hanson</A> /
<A HREF="mailto:drh@cs.princeton.edu">drh@cs.princeton.edu</A><BR>$Revision: 1.13 $ $Date: 2004-08-18 02:28:49 +0000 (Wed, 18 Aug 2004) $</ADDRESS>
</BODY>
</HTML>
